home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / logs / logbook / contest.bas < prev    next >
BASIC Source File  |  1987-12-15  |  10KB  |  165 lines

  1. 10 ON ERROR GOTO 1200
  2. 20 KEY OFF:G$="G3ZCZ CONTEST LOGGING PROGRAM VERSION 3.0" :CLS:WIDTH 80:LOCATE 5,1:PRINT G$:LOCATE 10,1:PRINT "IF TIME IS NOT SET TO UTC, STOP NOW AND SET THE CLOCK IN DOS"
  3. 30 K1=0:GOSUB 930
  4. 40 BANDS=7:M9=4000:DIM W$(M9),F1(M9),B(BANDS),B1(BANDS):R1$="00":S1$="599":C$="?"
  5. 50 BLANK$="                                                                    "
  6. 60 C4$="RXWBMCFL*/Q?OP+":L0$=BLANK$:QS$="-":QR$=QS$:R$=R1$:S$=S1$:L1$=L0$:L2$=L0$:L3$=L0$:L4$=L0$
  7. 70 L5$=L0$:L6$=L0$:L7$=L0$:L8$=L0$:L13$=L0$:L12$=L0$:L11$=L0$:L10$=L0$:L9$=L0$
  8. 80 FOR I%=1 TO BANDS:READ B(I%):NEXT:DATA 1,4,16,64,256,1024,4096
  9. 90 FOR I%=1 TO BANDS:READ B1(I%):NEXT:DATA 10,15,20,40,80,160,2
  10. 100 LOCATE 15,1:INPUT "Enter name of lOG file (D:NAME) Log type .LOG Assumed ",L$:IF L$="" THEN 100
  11. 110 GOSUB 880
  12. 120 CLS
  13. 130 OPEN L$+".$$$" FOR OUTPUT AS #2
  14. 140 OPEN L$+".LOG" FOR INPUT AS #1:GOTO 160
  15. 150 GOSUB 420 :GOSUB 430 :GOSUB 460:GOTO 1000
  16. 160 LOCATE 23,1:PRINT "LOADING LAST ENTRY STRINGS":OPEN L$+".CHK" FOR INPUT AS #3
  17. 170 INPUT#3,L13$,L12$,L11$,L10$,L9$,L8$,L7$,L6$,L5$,L4$,L3$,L2$,L1$:CLOSE#3
  18. 180 PRINT "OPENING LOGBOOK ";L$:N4=0
  19. 190 IF EOF(1) THEN INPUT"Waiting,touch ENTER to continue ";A$:GOSUB 470:GOTO 1000
  20. 200 INPUT#1,D$,T$,B$,C$,R$,S$,M$,P$,QS$,QR$,X$ : PRINT N4,C$,X$:IF C$="/*" THEN N4=N4-1 ELSE N4=N4+1
  21. 210 IF C$="/*" THEN C$=C8$:GOSUB 300:W$(J)=" ":F1(J)=F1(J)-B(B%):C$="/*":GOTO 240
  22. 220 GOSUB 300:W$(J)=C$:F=VAL(B$):FOR Q%=1 TO BANDS:IF INT(F)=B1(Q%) THEN F1(J)=F1(J)+B(Q%):B%=Q%:GOTO 240
  23. 230 NEXT
  24. 240 C8$=C$:WRITE#2,D$;T$;B$;C$;R$;S$;M$;P$;QS$;QR$;X$:GOTO 190
  25. 250 LOCATE 20,1:PRINT BLANK$:LOCATE 20,1:RETURN
  26. 260 L0$=BLANK$:MID$(L0$,6)=D$:MID$(L0$,15)=T$:MID$(L0$,20)=C$:MID$(L0$,32)=B$:MID$(L0$,36)=M$:MID$(L0$,40)=P$
  27. 270 IF C$="/*" THEN MID$(L0$,1)="-" ELSE N4$=STR$(N4):MID$(L0$,1)=MID$(N4$,2)
  28. 280 MID$(L0$,45)=R$:MID$(L0$,49)=S$:MID$(L0$,53)=QS$:MID$(L0$,55)=QR$:MID$(L0$,57)=X$:RETURN
  29. 290 T$=LEFT$(TIME$,2)+MID$(TIME$,4,2):D$=RIGHT$(DATE$,2)+"/"+LEFT$(DATE$,2)+"/"+MID$(DATE$,4,2):RETURN
  30. 300 J=0:IF C$="/*" THEN 380
  31. 310 FOR I%=1 TO LEN(C$):A$=MID$(C$,I%,1):J=J+(ASC(A$)-47):NEXT:J=J*ASC(LEFT$(C$,1)):IF J<0 THEN J=0
  32. 320 IF J>M9 THEN J = J-M9 : GOTO 320
  33. 330 IF LEN(W$(J))<1 THEN 380
  34. 340 IF LEFT$(W$(J),1)=" " THEN 380
  35. 350 IF LEFT$(W$(J),LEN(C$))=C$ THEN 370
  36. 360 J=J+1:GOTO 320
  37. 370 I=0:RETURN
  38. 380 I=1:RETURN
  39. 390 INPUT "REPORT RECEIVED ";A$:IF A$="" THEN 400 ELSE X$=A$
  40. 400 RETURN
  41. 410 GOSUB 250:INPUT "REPORT SENT     ";S$:IF S$>"599" THEN 410 ELSE RETURN
  42. 420 GOSUB 250:INPUT "POWER (watts)   ";P$:IF P$<"0" THEN 420 ELSE RETURN
  43. 430 GOSUB 250:INPUT "BAND            ";F : IF F>160 THEN 430
  44. 440 FOR I%=1 TO BANDS:IF INT(F)=B1(I%) THEN 450 ELSE NEXT:LOCATE 22,1:FOR I%=1 TO BANDS:PRINT B1(I%);" ";:NEXT:GOTO 430
  45. 450 B$=MID$(STR$(F),2):B%=I%:GOSUB 730:RETURN
  46. 460 GOSUB 250:INPUT "MODE            ";M$: IF M$="" THEN 460
  47. 470 IF M$="SSB" THEN S1$="59" ELSE S1$="599"
  48. 480 RETURN
  49. 490 GOSUB 250:INPUT "CALL SIGN       ";A$
  50. 500 IF A$="" THEN 580 :IF LEFT$(A$,1)="" THEN A$=LEFT$(A$,LEN(A$)):GOTO 500
  51. 510 LOCATE 22,1:PRINT BLANK$: LOCATE 22,1:C$=A$:GOSUB 300:IF I=0 THEN 530
  52. 520 PRINT "OK":GOTO 580
  53. 530 F2=F1(J): PRINT "WORKED on ";
  54. 540 FOR Q%=BANDS TO 1 STEP -1: IF F2<B(Q%) THEN 570
  55. 550 PRINT B1(Q%);" ";:F2=F2-B(Q%):IF B1(Q%)=INT(F) THEN PRINT "DUPLICATE";CHR$(7);
  56. 560 IF F2>=B(Q%) THEN 540
  57. 570 NEXT
  58. 580 IF P2=1 THEN LPRINT C$
  59. 590 RETURN
  60. 600 GOSUB 250:INPUT "ARE YOU SURE ";A$ :IF A$="" THEN RETURN
  61. 610 IF N4<1 THEN GOSUB 250 : PRINT "CAN'T F***** A ZERO ENTRY":RETURN
  62. 620 IF A$=""OR LEFT$(A$,1) <> "Y" THEN RETURN
  63. 630 C$=C8$:GOSUB 300:F1(J)=F1(J)-B(B%):IF F1(J)<=0 THEN W$(J)=" "
  64. 640 C$="/*":GOTO 680
  65. 650 IF LEN(X$)=0 THEN 660 ELSE IF LEFT$(C$,1)="?" THEN 660 ELSE 670
  66. 660 LOCATE 22,1:PRINT BLANK$: LOCATE 22,1:PRINT "GET THE DATA FIRST":RETURN
  67. 670 GOSUB 290:C8$=C$:GOSUB 300: F1(J)=F1(J)+B(B%):W$(J)=C$:GOSUB 1070
  68. 680 WRITE#2,D$;T$;B$;C$;R$;S$;M$;P$;QS$;QR$;X$
  69. 690 IF C$="/*" THEN 700 ELSE N4=N4+1:GOTO 710
  70. 700 N4=N4-1:IF N4<0 THEN N4=0
  71. 710 GOSUB 260:L13$=L12$:L12$=L11$:L11$=L10$:L10$=L9$:LOCATE 1,5:PRINT G$
  72. 720 L9$=L8$:L8$=L7$:L7$=L6$:L6$=L5$:L5$=L4$:L4$=L3$:L3$=L2$:L2$=L1$:L1$=L0$:IF P1 = 1 THEN LPRINT L0$
  73. 730 GOSUB 740:C$="?":R$=R1$:S$=S1$:X$="":RETURN
  74. 740 I=3:GOSUB 780:PRINT L13$:I=4:GOSUB 780:PRINT L12$:I=5:GOSUB 780:PRINT L11$:I=6:GOSUB 780:PRINT L10$
  75. 750 I=7:GOSUB 780:PRINT L9$:I=8:GOSUB 780:PRINT L8$:I=9:GOSUB 780:PRINT L7$:I=10:GOSUB 780:PRINT L6$
  76. 760 I=11:GOSUB 780:PRINT L5$:I=12:GOSUB 780:PRINT L4$:I=13:GOSUB 780:PRINT L3$:I=14:GOSUB 780:PRINT L2$
  77. 770 I=15:GOSUB 780:PRINT L1$:RETURN
  78. 780 LOCATE I,1:PRINT BLANK$:LOCATE I,1:RETURN
  79. 790 GOSUB 250:INPUT "ARE YOU SURE ";A$:IF A$="" THEN RETURN
  80. 800 IF LEFT$(A$,1)<>"Y" THEN RETURN
  81. 810 CLS:PRINT "SAVING LAST ENTRY STRINGS BEFORE CLOSING":OPEN L$+".CHK" FOR OUTPUT AS #3
  82. 820 WRITE#3,L13$;L12$;L11$;L10$;L9$;L8$;L7$;L6$;L5$;L4$;L3$;L2$;L1$
  83. 830 CLOSE#3:CLOSE#1:CLOSE#2
  84. 840 KILL L$+".BAK"
  85. 850 NAME L$+".LOG" AS L$+".BAK"
  86. 860 NAME L$+".$$$" AS L$+".LOG"
  87. 870 GOTO 1350 : REM END
  88. 880 INPUT "Do you want a running log printed out (Y/N) "; A$: IF A$="" THEN 880
  89. 890 IF LEFT$(A$,1)="Y" THEN P1 = 1 ELSE IF LEFT$(A$,1)="N" THEN P1 = 0 ELSE 880
  90. 900 INPUT "Do you want CALL SIGNS printed out (Y/N) "; A$: IF A$="" THEN 900
  91. 910 IF LEFT$(A$,1)="Y" THEN P2 = 1 ELSE IF LEFT$(A$,1)="N" THEN P2 = 0 ELSE 900
  92. 920 RETURN
  93. 930 IF K1 = 1 THEN 970
  94. 940 KEY 1,"QSL   "+CHR$(13): KEY 2,"BAND  "+CHR$(13):KEY 3,"CALL  "+CHR$(13):KEY 4, "*QRT  "+CHR$(13):KEY 5,"RPT RX "+CHR$(13)
  95. 950 KEY 6,"FUDGE "+CHR$(13): KEY 7,"XMT RPT"+CHR$(13):KEY 8,"/PX CHK"+CHR$(13):KEY 9, "LOG   "+CHR$(13):KEY 10,"+MORE "+CHR$(13):K1=1
  96. 960 GOTO 990
  97. 970 KEY 1,"WATTS "+CHR$(13): KEY 2,"MODE  "+CHR$(13):KEY 3,"?CLN  "+CHR$(13):KEY 4, "PRINT "+CHR$(13):KEY 5,"OOPS  "+CHR$(13)
  98. 980 KEY 6,"      "+CHR$(13): KEY 7,"        "+CHR$(13):KEY 8,"        "+CHR$(13):KEY 9, "      "+CHR$(13):KEY 10,"+MORE "+CHR$(13):K1=0
  99. 990 RETURN
  100. 1000 GOSUB 1090: GOSUB 730
  101. 1010 GOSUB 1100
  102. 1020  LOCATE 17,30:PRINT "CURRENT ENTRY":GOSUB 290:GOSUB 260
  103. 1030 MID$(L0$,1)=STR$(N4+1):LOCATE 18,1 : PRINT BLANK$:LOCATE 18,1 : PRINT STR$(N4+1),C$,X$
  104. 1040 GOSUB 250:INPUT "QRU ";A$:IF A$=""THEN 1040
  105. 1050 FOR J2%=1 TO LEN(C4$):IF LEFT$(A$,1)=MID$(C4$,J2%,1) THEN 1060 ELSE NEXT:GOTO 1040
  106. 1060 GOSUB 250:ON J2% GOSUB 390,410,420,430,460,490,600,650,790,1130,1080,1070,1370,880,930:GOTO 1010
  107. 1070 LOCATE 21,1:PRINT BLANK$:PRINT BLANK$:PRINT BLANK$:RETURN
  108. 1080 LOCATE 22,1:PRINT L0$:RETURN
  109. 1090 CLS: KEY ON: RETURN
  110. 1100 LOCATE 2,1:PRINT"-------------------------------------------------------------------------------"
  111. 1110 LOCATE 1,5:PRINT G$,L$
  112. 1120 LOCATE 16,1:PRINT"-------------------------------------------------------------------------------":RETURN
  113. 1130 GOSUB 250:INPUT "ARE YOU SURE ";A$:IF A$="" THEN RETURN
  114. 1140 INPUT "WHICH PREFIX ";A$:IF LEN(A$)<1 THEN A$="*"
  115. 1150 CLS:GOSUB 1100:LOCATE 3,1
  116. 1160 I%=0:FOR Q=1 TO M9:IF LEN(W$(Q))<=2 THEN 1190
  117. 1170 IF A$="*" THEN 1180 ELSE IF A$=LEFT$(W$(Q),LEN(A$)) THEN 1180 ELSE 1190
  118. 1180 PRINT W$(Q),:I%=I%+1:IF I%=4 THEN I%=0:PRINT
  119. 1190 NEXT:PRINT:INPUT "READY WHEN YOU ARE, HIT ENTER TO CONTINUE";A$:CLS:GOSUB 1090:GOSUB 740:RETURN
  120. 1200 IF ERR = 64 OR ERR = 67 THEN PRINT "BAD FILE NAME ERROR" : GOTO 1640
  121. 1210 IF ERL = 140 THEN OPEN L$+".LOG" FOR OUTPUT AS #3:CLOSE#3:OPEN L$+".LOG" FOR INPUT AS #1:RESUME 150
  122. 1220 IF ERR = 61 THEN PRINT "Yuk Yuk Yuk DISK FULL ERROR - You may have blown it" :GOTO 1640
  123. 1230 IF ERL=160 THEN PRINT "CHECK LIST ERROR, RECOVERING....":RESUME 180
  124. 1240 IF ERL = 580 THEN PRINT "PRINTER ERROR, ABORTING PRINTING":RESUME 590
  125. 1250 IF ERL = 720 THEN RESUME 730
  126. 1260 IF ERL = 840 THEN RESUME 850
  127. 1270 IF ERL = 1610 AND ERR = 70 THEN PRINT "DISK WRITE PROTECT ERROR":GOTO 1640
  128. 1280 IF ERR = 62 AND ERL = 200 THEN GOSUB 730:INPUT"Waiting,touch ENTER to continue ";A$:RESUME 1000
  129. 1290 IF ERR = 53 THEN PRINT "LOG FILE DOES NOT EXIST ON DEFAULT DISK DRIVE":GOTO 1640
  130. 1300 IF ERR = 72 THEN PRINT "DISK MEDIA ERROR":GOTO 1640
  131. 1310 IF ERR = 71 THEN PRINT "DISK NOT READY ERROR":GOTO 1640
  132. 1320 IF ERR = 58 THEN 1640
  133. 1330 PRINT "ERROR ";ERR;" AT LINE ";ERL:CLOSE:GOTO 1640
  134. 1340 REM RESUME 750:REM CLOSE DOWN IN AN ORDERLY MANNER
  135. 1350 INPUT "Is the contest over (Y/N) ";A$: IF LEN(A$)<1 THEN 1350
  136. 1360 IF LEFT$(A$,1)="Y" THEN 1390 ELSE 1640
  137. 1370 INPUT "What is the number of lost calls (to be added to the memory) ";O:IF O <0 THEN 1370
  138. 1380 N4 = N4+O : RETURN
  139. 1390 PRINT "CONVERTING (CLEANING UP) CONTEST LOG TO STANDARD LOG"
  140. 1400 OPEN L$+".LOG" FOR INPUT AS #1
  141. 1410 OPEN L$+".$$$" FOR OUTPUT AS #2
  142. 1420 INPUT "Do you want the contacts numbered (Y/N) ";AA$: IF LEN(AA$)=0 THEN 1420
  143. 1430 IF LEFT$(AA$,1)="Y" THEN N0=1 ELSE N0=0:IF LEFT$(AA$,1)<>"N" THEN 1420
  144. 1440 INPUT "What is the name of the contest ";X$
  145. 1450 N=1:T$=" ":B$=" ":C$="-CONTEST":R$=" ":S$=" ":P$=" ":QS$=" ":QR$=" ":GOSUB 1610
  146. 1460 IF EOF(1) THEN 1520 ' GET FIRST ENTRY
  147. 1470 GOSUB 1570:GOSUB 1580:IF C1$="/*" THEN GOSUB 1630: GOTO 1460 'REM DONT SAVE FUDGE FLAG OR PREVIOUS LINE
  148. 1480 IF EOF(1) THEN 1510 ' GET SUBSEQUENT ENTRIES
  149. 1490 GOSUB 1570:IF C1$="/*" THEN GOSUB 1630:GOTO 1460 'REM DONT SAVE FUDGE FLAG OR PREVIOUS LINE
  150. 1500 GOSUB 1590:GOSUB 1580:GOTO 1480
  151. 1510 GOSUB 1590:PRINT :PRINT N9;"Entries were corrected/deleted"
  152. 1520 CLOSE#1 : CLOSE#2
  153. 1530 NAME L$+".LOG" AS L$+".RUN"
  154. 1540 NAME L$+".$$$" AS L$+".LOG"
  155. 1550 GOTO 1640
  156. 1560 REM SUBROUTINES FOLLOW
  157. 1570 INPUT#1,D1$,T1$,B1$,C1$,R1$,S1$,M1$,P1$,QS1$,QR1$,X1$:RETURN
  158. 1580 D$=D1$:T$=T1$:B$=B1$:C$=C1$:R$=R1$:S$=S1$:M$=M1$:P$=P1$:QS$=QS1$:QR$=QR1$:X$=X1$:RETURN
  159. 1590 R$=MID$(X$,1,3):X$=MID$(X$,4,LEN(X$))
  160. 1600 IF N0=1 THEN N$=STR$(N):N$=MID$(N$,2):X$=N$+"-"+X$:N=N+1
  161. 1610 WRITE#2, D$;T$;B$;C$;R$;S$;M$;P$;QS$;QR$;X$
  162. 1620 PRINT D$;TAB(10);T$;TAB(15);C$;TAB(26);B$;TAB(30);R$;TAB(34);S$;TAB(38);M$;TAB(43);P$;TAB(48);QS$;TAB(50);QR$;TAB(52);X$:RETURN
  163. 1630 N9=N9+1:PRINT "ENTRY with ";C$;" DELETED":RETURN
  164. 1640 END
  165.